#pragma once

#include "CH58x_common.h"
#include "new_gpio.h"

typedef enum
{
#if UART0_COMPILE_EN
    UART0 = 0x40003000,
#endif
#if UART1_COMPILE_EN
    UART1 = 0x40003400,
#endif
#if UART2_COMPILE_EN
    UART2 = 0x40003800,
#endif
#if UART3_COMPILE_EN
    UART3 = 0x40003C00,
#endif
} uart_ch_t;

typedef void (*uart_rec_cb_t)(uint8_t data);

void uart_init(uart_ch_t ch, uint32_t band, gpio_t txd, gpio_t rxd, uart_rec_cb_t cb);
void uart_set_rec_cb(uart_ch_t ch, uart_rec_cb_t cb);
void uart_send(uart_ch_t ch, const uint8_t *data, size_t len);
void uart_wait_tx_done(uart_ch_t ch);
void uart_deinit(uart_ch_t ch);
